/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ufps.cuatro.modelo.representacion.componente;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.ufps.cuatro.modelo.analizador.ObjetoReflexion;
import com.ufps.cuatro.modelo.biblioteca.TipoBiblioteca;
import com.ufps.cuatro.modelo.representacion.PlantillaCombo;
import com.ufps.cuatro.modelo.representacion.PlantillaComponente;
import com.ufps.cuatro.util.Utileria;
import com.ufps.cuatro.util.base.ComponenteBaseStandar;
import com.ufps.cuatro.util.generadores.GeneradorComponentes;
import com.ufps.cuatro.util.generadores.codeobject.CodeContextLine;
import com.ufps.cuatro.util.generadores.codeobject.EnumTypeCodeSyntax;

/**
 *
 * @author Carlos A. Torres C. 
 */
public class ComponenteDistribuidorIntegradorMetodo extends ComponenteDistribuidorIntegrador{
    private static final long serialVersionUID = 8754069460792344425L;
    
    private int idClaseComponenteIntegradorMetodo;
    /**
     * Serie Númerica para la generación de id de Objetos.
     */
    public static int serialIdComponenteIntegradorMetodo;
    /**
     * Referencia al Objeto que permite la representación Actual.
     */
    protected transient ObjetoReflexion objReflexion;
    //Propiedades internas para reconstruir el ObjetoReflexion
    private String strClassPathClassParent;
    private boolean method;
    private String strClassPathPropiedad;
    
    private ComponenteDistribuidorGenerador objComponenteReturn;    
    protected boolean addReturn;

    public ComponenteDistribuidorIntegradorMetodo(ComponenteBaseStandar objComponenteBase, boolean heredado, boolean previsualizar, ObjetoReflexion objReflexion) {
        super(objComponenteBase, heredado, previsualizar);
        this.heredado = heredado;
        this.previsualizar = previsualizar;
        this.objReflexion = objReflexion;
        this.addReturn = false;
	this.dni = Utileria.leerRecursoTexto("Utileria.dni.componente.distribuidor.integrador.metodo");   
        if(!heredado) {
            this.idClaseComponenteIntegradorMetodo = (!previsualizar) ?
                    ComponenteDistribuidorIntegradorMetodo.serialIdComponenteIntegradorMetodo++ :
                    ComponenteDistribuidorIntegradorMetodo.serialIdComponenteIntegradorMetodo;
        }
        analizarObjetoReflexion();        
    }
    
    private void analizarObjetoReflexion(){
      try{
            //analizar el Tipo de Objeto Contenido
            if(this.objReflexion.getObj() instanceof Field){
                this.method = false;
            }
            else if(this.objReflexion.getObj() instanceof Method){            
                Method objMethod = (Method) this.objReflexion.getObj();
                Class objClass = objMethod.getDeclaringClass();
                this.method = true;
                this.strClassPathClassParent = objClass.getCanonicalName();
                this.strClassPathPropiedad = objMethod.toGenericString();
            }        
        }catch(java.lang.NullPointerException ex){}
    }

    @Override
    public void setObjComponentesDistribuidores(ArrayList<ComponenteDistribuidor> objComponentesDistribuidores) {
        super.setObjComponentesDistribuidores(objComponentesDistribuidores);
        if(objComponentesDistribuidores == null){
            this.addReturn = false;
        }
        else{
            addReturn = objComponentesDistribuidores.isEmpty();
        }
    }

    public boolean isAddReturn() {
        return addReturn;
    }

    public void setAddReturn(boolean addReturn) {
      try{
        this.addReturn = addReturn;
        this.objComponenteReturn.setIncluido(addReturn);
        }catch(java.lang.NullPointerException ex){}
      
    }

    public boolean isMethod() {
        return method;
    }

    public void setMethod(boolean method) {
        this.method = method;
    }

    public String getStrClassPathClassParent() {
        return strClassPathClassParent;
    }

    public void setStrClassPathClassParent(String strClassPathClassParent) {
        this.strClassPathClassParent = strClassPathClassParent;
    }

    public String getStrClassPathPropiedad() {
        return strClassPathPropiedad;
    }

    public void setStrClassPathPropiedad(String strClassPathPropiedad) {
        this.strClassPathPropiedad = strClassPathPropiedad;
    }    
    
    /**
     * Devuelve el id de creación del Componente. No se debe confundir con el #getId()
     * @return @DefinicionReturn
     */
    public int getIdClaseComponenteIntegradorMetodo() {
      try{
            return idClaseComponenteIntegradorMetodo;
        }catch(java.lang.NullPointerException ex){}
      return 0;
    }

    public ComponenteDistribuidorGenerador getObjComponenteReturn() {
        return objComponenteReturn;
    }

    public void setObjComponenteReturn(ComponenteDistribuidorGenerador objComponenteReturn) {
        this.objComponenteReturn = objComponenteReturn;
    }   
    
    public void crearDistribuicionGrupalInicial(PlantillaCombo objPlantillaCombo, ArrayList<PlantillaComponente> objTempPlantillasComponentes){                
      try{
        ArrayList<Componente> objComponentesIncluidos = new ArrayList<Componente>();
        //Ubicar cada Plantilla con el Componente Asigando y Actualizar
        //Esta busqueda se hace por medio del id        
        for(PlantillaComponente objTempPlantillaComponente : objTempPlantillasComponentes){            
            if(objTempPlantillaComponente.getRepresentacion() == PlantillaComponente.GENERADOR_DEPENDIENTE_INTEGRADOR_RETURN &&
                    objComponenteReturn != null){                                
                objComponenteReturn.agregarDistribucionIndividual(objPlantillaCombo, objTempPlantillaComponente);
                objComponentesIncluidos.add(objComponenteReturn);                                            
            }
            else if(objTempPlantillaComponente.getRepresentacion() == PlantillaComponente.GENERADOR_DEPENDIENTE_INTEGRADOR_PARAM){                
                Componente objComponente = this.objComponentesDistribuidores.get(objTempPlantillaComponente.getId());                
                objComponente.agregarDistribucionIndividual(objPlantillaCombo, objTempPlantillaComponente);
                objComponentesIncluidos.add(objComponente);            
            }
        }
        Distribuidor objDistribuidor = new Distribuidor(objComponentesIncluidos, objPlantillaCombo);
        this.agregarDistribucionGrupal(objPlantillaCombo, objDistribuidor);        
    }catch(java.lang.NullPointerException ex){}
      
    }
         
    public ArrayList<PlantillaComponente> getDistribucionGrupalInicialHorizontal(PlantillaCombo objPlantillaCombo){
      try{
        try{
            int size = this.objComponentesDistribuidores.size();
            int filas = 0;
            int proxX = 0;            
            ArrayList<PlantillaComponente> objTempPlantillas = new ArrayList<PlantillaComponente>();
            for(int i = 0; i < size; i++){                
                Object obj = this.objComponentesDistribuidores.get(i);
                PlantillaComponente objPlantilla = new PlantillaComponente();
                objPlantilla.setRepresentacion(PlantillaComponente.GENERADOR_DEPENDIENTE_INTEGRADOR_PARAM);
                if(obj instanceof ComponenteDistribuidorGenerador){
                    ComponenteDistribuidorGenerador objComponente = (ComponenteDistribuidorGenerador) obj;                    
                    objPlantilla.setX(proxX);
                    objPlantilla.setY(filas);                    
                    objPlantilla.updateGridBadConstraintsFromComponente(objComponente, objPlantillaCombo, true);
                    objPlantilla.setGenerador(true);
                    objPlantilla.setHeight(objComponente.getObjGridBagConstraints().gridheight);
                    objPlantilla.setWidth(objComponente.getObjGridBagConstraints().gridwidth);                    
                    objPlantilla.setIdComponente(objComponente.getId());
                    objPlantilla.setId(i);
                    objPlantilla.setIdPlantilla(0);
                    objPlantilla.setIncluido(true);
                    objPlantilla.setZona(0);
                    this.objComponentesDistribuidores.set(i, objComponente);
                }                
                proxX += objPlantilla.getObjGridBagConstraints().gridwidth;
                objTempPlantillas.add(objPlantilla);
            } 
            if(objComponenteReturn != null){
                //Se crea la Plantilla Componente para el Componente Parent
                PlantillaComponente objPlantilla = new PlantillaComponente();                            
                objPlantilla.setRepresentacion(PlantillaComponente.GENERADOR_DEPENDIENTE_INTEGRADOR_RETURN);
                objPlantilla.setX(proxX);
                objPlantilla.setY(filas);            
                objPlantilla.updateGridBadConstraintsFromComponente(objComponenteReturn, objPlantillaCombo, true);
                objPlantilla.setGenerador(true);
                objPlantilla.setHeight(this.objComponenteReturn.getObjGridBagConstraints().gridheight);
                objPlantilla.setWidth(this.objComponenteReturn.getObjGridBagConstraints().gridwidth);                    
                objPlantilla.setIdComponente(this.objComponenteReturn.getId());
                objPlantilla.setId(objTempPlantillas.size());
                objPlantilla.setIdPlantilla(0);
                objPlantilla.setIncluido(true);
                objPlantilla.setZona(0);
                objTempPlantillas.add(objPlantilla);
            }
            return objTempPlantillas;
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);            
        }
      }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    public ArrayList<PlantillaComponente> getDistribucionGrupalInicialVertical(PlantillaCombo objPlantillaCombo){
      try{
        try{
            int size = this.objComponentesDistribuidores.size();
            int columnas = 0;
            int proxX = 0;            
            ArrayList<PlantillaComponente> objTempPlantillas = new ArrayList<PlantillaComponente>();
            for(int i = 0; i < size; i++){                
                Object obj = this.objComponentesDistribuidores.get(i);
                PlantillaComponente objPlantilla = new PlantillaComponente();
                objPlantilla.setRepresentacion(PlantillaComponente.GENERADOR_DEPENDIENTE_INTEGRADOR_PARAM);
                if(obj instanceof ComponenteDistribuidorGenerador){
                    ComponenteDistribuidorGenerador objComponente = (ComponenteDistribuidorGenerador) obj;                    
                    objPlantilla.setX(columnas);
                    objPlantilla.setY(proxX);                    
                    objPlantilla.updateGridBadConstraintsFromComponente(objComponente, objPlantillaCombo, true);
                    objPlantilla.setGenerador(true);
                    objPlantilla.setHeight(objComponente.getObjGridBagConstraints().gridheight);
                    objPlantilla.setWidth(objComponente.getObjGridBagConstraints().gridwidth);                    
                    objPlantilla.setIdComponente(objComponente.getId());
                    objPlantilla.setId(i);
                    objPlantilla.setIdPlantilla(0);
                    objPlantilla.setIncluido(true);
                    objPlantilla.setZona(0);
                    this.objComponentesDistribuidores.set(i, objComponente);                    
                }           
                proxX += objPlantilla.getObjGridBagConstraints().gridheight;
                objTempPlantillas.add(objPlantilla);
            }    
            if(objComponenteReturn != null){
                PlantillaComponente objPlantilla = new PlantillaComponente();                            
                objPlantilla.setRepresentacion(PlantillaComponente.GENERADOR_DEPENDIENTE_INTEGRADOR_RETURN);
                objPlantilla.setX(columnas);
                objPlantilla.setY(proxX);            
                objPlantilla.updateGridBadConstraintsFromComponente(objComponenteReturn, objPlantillaCombo, true);
                objPlantilla.setGenerador(true);
                objPlantilla.setHeight(this.objComponenteReturn.getObjGridBagConstraints().gridheight);
                objPlantilla.setWidth(this.objComponenteReturn.getObjGridBagConstraints().gridwidth);                    
                objPlantilla.setIdComponente(this.objComponenteReturn.getId());
                objPlantilla.setId(objTempPlantillas.size());
                objPlantilla.setIdPlantilla(0);
                objPlantilla.setIncluido(true);
                objPlantilla.setZona(0);
                objTempPlantillas.add(objPlantilla);
            }
            return objTempPlantillas;
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
      }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    public ArrayList<PlantillaComponente> getDistribucionGrupalInicialRectangular(PlantillaCombo objPlantillaCombo){
        try{
            return null;
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
    @Override    
    public String toString() {
      try{
        if(this.eBiblioteca == TipoBiblioteca.eSwap) {
            return this.objClassSwing.getSimpleName() + "BS" + this.dni + this.idClaseComponenteIntegradorMetodo;
        }
        else if(this.eBiblioteca == TipoBiblioteca.eLocal) {
            return this.objClassSwing.getSimpleName() + "BL" + this.dni + this.idClaseComponenteIntegradorMetodo;
        }
        else if(this.eBiblioteca == TipoBiblioteca.eGlobal) {
            return this.objClassSwing.getSimpleName() + "BG" + this.dni + this.idClaseComponenteIntegradorMetodo;
        }
        else if(this.getObjPropiedadesDisponibles() != null){            
            //se evalua si la propiedad name ha sido inicializada
            if(!this.getObjPropiedadesDisponibles().isEmpty()){                
                return this.getName();
            }
        }
        return this.objClassSwing.getSimpleName() + this.dni + this.idClaseComponenteIntegradorMetodo;
    }catch(java.lang.NullPointerException ex){}
      return "";
    }   
    
    @Override
    public int compareTo(Object o) {
       try{
        if(o instanceof ComponenteDistribuidorGeneradorUnitario ||
                o instanceof ComponenteDistribuidorGeneradorEnum ||
                o instanceof ComponenteDistribuidorGeneradorVinculador ||
                o instanceof ComponenteDistribuidorGeneradorString ||
                o instanceof ComponenteDistribuidorGeneradorClaseCompleja ||
                o instanceof ComponenteDistribuidorIntegradorSimple){
            return -1;
        }        
        else{
            ComponenteDistribuidorIntegradorMetodo obj = (ComponenteDistribuidorIntegradorMetodo) o;
            if(this.idClaseComponenteIntegradorMetodo > obj.idClaseComponenteIntegradorMetodo) {
                return 1;
            }
            else if(this.idClaseComponenteIntegradorMetodo < obj.idClaseComponenteIntegradorMetodo) {
                return -1;
            }
            else {
                return 0;
            }
        }
    }  catch(java.lang.NullPointerException ex){}
       return 0;
    }  
    
    public boolean actualizarPlantillaComboDistribucionGrupalSeleccionada(PlantillaCombo objPlantillaComboDistribucionGrupalSeleccionada) {
        try{
            this.objPlantillaComboDistribucionIndividualSeleccionada = objPlantillaComboDistribucionGrupalSeleccionada;
            this.objPlantillaComboDistribucionGrupalSeleccionada = objPlantillaComboDistribucionGrupalSeleccionada;
            if(objComponenteReturn != null){
                this.objComponenteReturn.objPlantillaComboDistribucionIndividualSeleccionada = objPlantillaComboDistribucionGrupalSeleccionada;
            }
            for(ComponenteDistribuidor objComponente : this.objComponentesDistribuidores){
                objComponente.setObjPlantillaComboDistribucionIndividualSeleccionada(objPlantillaComboDistribucionGrupalSeleccionada);
            }            
            return true;
        }catch(java.lang.ArrayIndexOutOfBoundsException ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);            
        }catch(java.lang.ArrayStoreException ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);            
        }
        return false;
    }          

    @Override
    public void ok() {
        if(this.previsualizar){
            this.idClaseComponenteIntegradorMetodo = ComponenteDistribuidorIntegradorMetodo.serialIdComponenteIntegradorMetodo++;
            this.previsualizar = false;
        }
    }
    
    public void importId(int id){
        ComponenteDistribuidorIntegradorMetodo.serialIdComponenteIntegradorMetodo = ++id;
        this.idClaseComponenteIntegradorMetodo = ComponenteDistribuidorIntegradorMetodo.serialIdComponenteIntegradorMetodo++;
    }
    
    @Override
    public boolean equals(Object obj) {
        if(obj instanceof ComponenteDistribuidorIntegradorMetodo){
            ComponenteDistribuidorIntegradorMetodo objComponente = (ComponenteDistribuidorIntegradorMetodo) obj;
            return this.toString().equals(objComponente.toString());
        }
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
       try{
        int hash = 3;
        hash = 67 * hash + this.idClaseComponenteIntegradorMetodo;
        return hash;
    }  catch(java.lang.NullPointerException ex){}
       return 0;
    } 
    
    /**
     * 
     * @return
     */
    public ObjetoReflexion getObjReflexion() {
        if(objReflexion == null){
            objReflexion = GeneradorComponentes.crearObjetoReflexionProperties(strClassPathClassParent, strClassPathPropiedad, method);
        }
        return objReflexion;
    }

    /**
     * 
     * @param objReflexion
     */
    public void setObjReflexion(ObjetoReflexion objReflexion) {
        this.objReflexion = objReflexion;
    }    
    
    public void eliminarReturn(){        
      try{
        this.getObjDistribuidorGrupalSeleccionado().objComponentesDistribuidos.remove(objComponenteReturn);
    }catch(java.lang.NullPointerException ex){}
      
    }

    @Override
    public ArrayList<CodeContextLine> generateSourceCodeSyntax(EnumTypeCodeSyntax eTypeCodeSintax) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public CodeContextLine generateSingleSourceCodeSyntax(EnumTypeCodeSyntax eTypeCodeSintax) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldDefinitionInstance(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){                    
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldDefinitionInstance(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }   
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldDefinitionClass(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldDefinitionClass(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }   
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldDefinitionConstant(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldDefinitionConstant(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }   
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldInitializationInstance(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldInitializationInstance(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldInitializationClass(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldInitializationClass(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }   
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldInitializationProperties(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldInitializationProperties(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void generateSourceCodeSyntaxFaseFieldInitializationGridBagConstraints(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseFieldInitializationGridBagConstraints(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void generateSourceCodeSyntaxFaseMethodDefinitionEvent(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseMethodDefinitionEvent(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void generateSourceCodeSyntaxFaseMethodImplementEvent(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseMethodImplementEvent(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    @Override
    public void generateSourceCodeSyntaxFaseMethodImplementFunctionSet(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseMethodImplementFunctionSet(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void generateSourceCodeSyntaxFaseMethodImplementFunctionGet(ArrayList<CodeContextLine> objSourceLinesCode) {
        try{            
            for(Componente objComponenteDistribuido : getComponentesDistribuidos()){
                if(objComponenteDistribuido instanceof ComponenteDistribuidor){
                    ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponenteDistribuido;
                    if(objComponenteDistribuido.isIncluido()){
                        objComponenteDistribuidor.generateSourceCodeSyntaxFaseMethodImplementFunctionGet(objSourceLinesCode);
                    }
                }
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(ComponenteDistribuidorIntegradorMetodo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}